Задано три
вещественных числа х, у и z. Определить min(max(x, y),
max(y, z), x + y + z), воспользовавшись
вспомогательными функциями для вычисления минимального и максимального
элементов из двух заданных.
Вход. В единственной строке задано три вещественных числа х,
у и z. Значения чисел не превышают по модулю 100.
Выход. Вывести ответ с
точностью до 2 знаков после десятичной точки.
Пример
входа |
Пример
выхода |
1.05 2.25
2.15 |
2.25 |
функции
Анализ алгоритма
Определим функции минимума и максимума двух чисел. С их
помощью вычислим требуемое выражение.
Реализация алгоритма
Определим функции минимума min и максимума max
двух чисел.
double min(double
x, double y)
{
return (x
< y) ? x : y;
}
double max(double
x, double y)
{
return (x
> y) ? x : y;
}
Основная часть программы. Читаем
входные данные. Вычисляем и выводим ответ.
scanf("%lf %lf %lf",&x,&y,&z);
res =
min(min(max(x,y),max(y,z)),x+y+z);
printf("%.2lf\n",res);
Java реализация
import java.util.*;
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
con.useLocale(Locale.US);
double x = con.nextDouble();
double y = con.nextDouble();
double z = con.nextDouble();
double res = Math.min(Math.min(Math.max(x,y),
Math.max(y,z)), x + y + z);
System.out.println(res);
con.close();
}
}
Java реализация –
собственные функции
import java.util.*;
public class Main
{
public static double min(double x, double y)
{
return (x <
y) ? x : y;
}
public static double max(double x, double y)
{
return (x >
y) ? x : y;
}
public static void
main(String[] args)
{
Scanner con = new Scanner(System.in);
double x = con.nextDouble();
double y = con.nextDouble();
double z = con.nextDouble();
double res = min(min(max(x,y), max(y,z)), x + y + z);
System.out.println(res);
con.close();
}
}
Python реализация
x, y, z = map(float, input().split())
res = min(min(max(x, y), max(y, z)), x + y + z);
print(res)